package com.Algorithm;

/**
 * 二分查找算法
 *
 * @author yisl
 * @create 2019-06-10 10:15
 */
public class BiSearch {
    /**
     * 又叫折半查找，要求待查找的序列有序。
     * 每次取中间位置的值与待查关键字比较，如果中间位置的值比待查关键字大，则在前半部分循环这个查找的过程，
     * 如果中间位置的值比待查关键字小， 则在后半部分循环这个查找的过程。直到查找到了为止，否则序列中没有待查的关键字。
     *
     */
    public static int biSearch(int[] array, int a) {

        int[][] aa = {{1,2,3},{4,5,6},{7,8,9}};
        System.out.println(aa.length);

        int lo = 0;
        int hi = array.length - 1;
        int mid = 0;
        while(lo <= hi){
            mid = (hi + lo)/2;
            if (array[mid] == a){
                return mid;
            }else if(array[mid] > a){
                hi = mid - 1;
            }else{
                lo = mid + 1;
            }
        }

        return -1;
    }

    public static void main(String[] args) {
        int[] array = {10,7,9,8,1,5,2};
        System.out.println(BiSearch.biSearch(array,2));
    }

}
